<?php
namespace Home\Controller\StoreKeeper;
use Think\Controller;
/*
 * 商品管理 2016.5.27
 * author:candy
 * 商品的增删改查
 * 商品的管理效果近似订单的管理
 * !!!商品至少一张图片
 */
class GoodController extends Controller {


    public function index(){
        $this->display("StoreKeeper:good");
        // $this->show('<style type="text/css">*{ padding: 0; margin: 0; } div{ padding: 4px 48px;} body{ background: #fff; font-family: "微软雅黑"; color: #333;font-size:24px} h1{ font-size: 100px; font-weight: normal; margin-bottom: 12px; } p{ line-height: 1.8em; font-size: 36px } a,a:hover{color:blue;}</style><div style="padding: 24px 48px;"> <h1>:)</h1><p>欢迎使用 <b>ThinkPHP</b>！</p><br/>版本 V{$Think.version}</div><script type="text/javascript" src="http://ad.topthink.com/Public/static/client.js"></script><thinkad id="ad_55e75dfae343f5a1"></thinkad><script type="text/javascript" src="http://tajs.qq.com/stats?sId=9347272" charset="UTF-8"></script>','utf-8');
    }

    /**
     * 6.6
     * 商品的删除
     * 商品标识位，如果有订单关联，或者收藏夹，修改有效位
     * 如果没有关联，直接删除（考虑批量问题）
     * 删除商品的同时，删除所有关联的item 以及图片
     */ 
    public function deleteGood(){

    }

    /**
     * 6.6
     * 规格的删除
     * 规格标识位，如果有订单关联，或者收藏夹，修改有效位
     * 如果没有关联，直接删除（考虑批量问题）
     */ 
    public function deleteItem(){

    }

    /**
     * 6.5
     * 商品查询
     * 选取规格中价格最低作为标价，选取第一张图片作为图片
     这里需要多测试，多联合查询容易出错
     */
    public function getGood(){
        $Good = M('Good');
        $result = $Good->distinct(true)->group('good.good_id')
        ->join('item ON good.good_id = item.good_id','LEFT')
        ->join('picture ON picture.id = good.good_id','LEFT')
        ->order('price desc')
        ->field('good.name,price,picture.pic_name,picture.pic_path,place,expressplace,picture.type,good.good_id,item.item_id')
        ->select();
        dump($result);
        // $this->assign('list',$result);
        // $this->display('StoreKeeper:item');
    }

    /**
     * 6.14
     * 商品详情
     */
    public function getDetail($good_id=null){
        $Good = M('Good');
        $result_item = $Good->distinct(true)
        ->join('item I ON good.good_id = I.good_id','LEFT')
        ->where('good.good_id='.$good_id)
        ->field('I.name as iname,good.name as gname,price,place,expressplace,remain,description,type,subtype')
        ->order('price desc')
        ->select();
        dump($result_item);
        $Pic = M('Picture');
        $result_pic = $Pic->distinct(true)
        ->where('id='.$good_id)
        ->select();
        dump($result_pic);
    }

    /**
      * 6.2
      * 添加规格信息
      * 待改进多规格
      * 6.5 
      * 完成多规格
      */
    private function saveItem($good_id=null){
        $item = M("Item");
        $dataList = array();
        for ($i=0; $i < count($_POST['price']); $i++) { 
            $dataList[] = array(
                    'price'=>$_POST['price'][$i],
                    'name'=>$_POST['itemname'][$i],
                    'good_id'=>$good_id
                );
        }
        return $item->addAll($dataList);
    }

    /**
     * 6.2
     * 添加商品信息
     */
    private function saveGood(){
        $Good = D("Good");
        $Good->create();
        date_default_timezone_set("Asia/Shanghai");
        $Good->time = date('y-m-d h:i:s',time());
        if(session("?shop_id")){
            $Good->shop_id = session('shop_id');
        }
        return $Good->add();
    }

    /**
     * 5.27 
     * 新提交商品信息
     * 上传新的头像，添加新的商品信息
     * 上传图像 （大小限制：3M；jpg/gif/png/jpeg）
     * 生成缩略图 三种规格 300x300 200x200 40x40
     * 6.5 功能已实现
     * 6.11 服务器裁剪生成缩略图
     * 6.14 只有店家能添加商品（需要shop_id）
     **/
    public function submit(){
        $upload = new \Think\Upload();// 实例化上传类
        $upload->maxSize   =     3145728 ;// 设置附件上传大小
        $upload->exts      =     array('jpg', 'gif', 'png', 'jpeg');// 设置附件上传类型
        $upload->rootPath  =     './Public/Uploads/good/'; // 设置附件上传根目录
        $upload->savePath  =     ''; // 设置附件上传（子）目录
        // 先处理上传文件 
        $info = $upload->upload();

        $good_id = $this->saveGood();

        if(!$good_id){
            $this->error("商品信息保存出错");
        }else{
            if(!$info) {// 上传错误提示错误信息
                $this->error($upload->getError());
            }else{// 上传成功
                $image = new \Think\Image(); 
                $pic_list = array();
                $cropInfo = $_POST['cropinfo'];
                //创建商品成功后，添加图片，和规格
                foreach ($info as $key => $img) {
                    $image->open($upload->rootPath.$img['savepath'].$img['savename']);
                    // 生成一个居中裁剪缩略图并保存为thumb.jpg
                    $crop = json_decode($cropInfo[$key],true);
                    $DIR = $upload->rootPath.$img['savepath'];
                    $image->crop($crop['width'],$crop['height'],$crop['x'],$crop['y'])->save($upload->rootPath.$img['savepath'].$img['savename']);
                    if (!is_dir($DIR.'300x300/')) mkdir($DIR.'300x300/',0777);
                    if (!is_dir($DIR.'200x200/')) mkdir($DIR.'200x200/',0777);
                    if (!is_dir($DIR.'40x40/')) mkdir($DIR.'40x40/',0777);
                    $image->thumb(300, 300,\Think\Image::IMAGE_THUMB_CENTER)->save($DIR.'300x300/'.$img['savename']);
                    $image->thumb(200, 200,\Think\Image::IMAGE_THUMB_CENTER)->save($DIR.'200x200/'.$img['savename']);
                    $image->thumb(40, 40,\Think\Image::IMAGE_THUMB_CENTER)->save($DIR.'40x40/'.$img['savename']);
                    //删除图片 未做异常处理
                    unlink($upload->rootPath.$img['savepath'].$img['savename']);
                    //上传后保存图片信息
                    $pic_list[] = array('pic_name'=>$img['savename'],'pic_path'=>$img['savepath'],'type'=>'good','id'=>$good_id);
                }
                /**
                  * 上传后处理 6.2
                  */
                $this->saveItem($good_id);
                //批量保存图片 6.5
                $pic = M('Picture');
                $pic->addAll($pic_list);
            }
        }
        
    }

}